# 任务详情
# 给定一个以字符串表示的非负整数num，移除num中的 k 个数字，使得剩下的数字是结果最小。

# 任务要求
# 1. 请将代码区的函数补充完整

# 2. 函数接收num：str和k：int两个参数，程序返回结果为num去掉k个数字后的最小结果，str类型

# 3. 如果num为空字符串，返回'0'

# 测试用例
# 示例 1

# 输入：num = '1541319'，k = 3 

# 输出：'1119'

# 解释：移除掉三个数字 5, 4, 3，形成一个新的最小的数字 '1119'


# 示例 2

# 输入：num = '500100'，k = 1

# 输出：'100'

# 解释：移掉首位的 5 剩下的数字为'100'，注意输出不能有任何前导零
# 
# # 1.运行或提交代码不需要自己编写测试用例，后台自动进行测试检查。
# 2.您编写代码的区域可以不限定在类或者函数体内，保证输入与输出符合任务要求即可。
# 3.点击“运行代码”按钮，可以查看程序设计是否正确，运行次数越多，任务得分越低。
# 4.点击“提交代码”按钮，系统将保存代码，并记录任务数据。
# 5.点击右上方“结束任务”按钮，系统将在后台计算任务得分，任务结束。
# -*- coding: utf-8 -*- 
class Solution:
    def minNum(self, num: str, k: int) -> str:
        list1 = []
        for i in num:
            n = int(i)
            while k > 0 and list1 and list1[-1] > n:
                list1.pop()
                k -= 1
            if list1 != [] or n != 0:
                list1.append(n)
        while k > 0 and list1:
            list1.pop()
            k -= 1
        return "".join([str(n) for n in list1]) if list1 else "0"


num1 = '1541319'
k1 = 3
num2 = '500100'
k2 = 1
print(Solution.minNum(Solution, num1, k1))
